One critical function performed by a computer system is transmitting data between processes that may reside on the same or different computer systems. To transmit data between processes, the processes use a transport mechanism. A transport mechanism is a combination software and hardware that is used to transport data between processes. A transport mechanism may include a combination of, for example, a network, a network card, and interface software that allows a process to transmit data over the network. Often, transport mechanisms are accessed through the use of utilities provided by an operating system, such as sockets available in UNIX. To transmit data, a process invokes an operating system utility, which in turn communicates with the hardware of the computer system to transmit data over a network to another computer.
Transport mechanisms follow one or more protocols when transmitting data. A protocol is a set of rules, procedures, and conventions that govern the process of transmitting data. Some protocols implement one or more layers of the Open System Interconnection (“OSI”) model. The OSI reference model is composed of seven layers, each specifying particular network functions. The OSI reference model is described in Internetworking Technologies Handbook, 3rd Edition, by Cisco Systems, Inc., February, 2001, the contents of which are incorporated herein by reference.
One layer defined by the OSI reference model is the transport layer. The transport layer is responsible for error checking, error control, and/or flow control. Examples of conventional protocols that implement the transport layer are the Transmission Control Protocol (TCP) and User Datagram Protocol (UDP). TCP is described in The Transport Layer: Tutorial and Survey, Sami Iren, Paul D. Amer, and Phillip T. Conrad, the contents of which are herein incorporated by reference.
Protocols, such as TCP and UDP, involve a tradeoff between two competing transport mechanism characteristics—reliability and speed. Reliability refers to a transport mechanism's ability to guarantee delivery of data transmitted by a sender to a receiver. A sender is a process that invokes a transport mechanism to transmit data to another process referred to as the receiver. A reliable transport mechanism guarantees delivery of data transmitted by a sender to a receiver. Transport mechanisms that use TCP are examples of reliable transport mechanisms. An unreliable transport mechanism does not guarantee delivery of data. Transport mechanisms that use UDP are examples of unreliable transport mechanisms.
In general, reliable transport mechanisms are not as fast as unreliable transport mechanisms. Reliable transport mechanisms invoke procedures, such as handshaking algorithms, that ensure that data transmitted is delivered. These procedures, while ensuring delivery, cause greater overhead and latency. For example, a reliable transport mechanism is used to transmit data over a network from a sending node to a receiving node. Data transmitted over the network to the receiving node is stored in buffers. When the receiving node receives the data, it transmits an acknowledgement to the sending node. When the sending node receives the acknowledgement, it releases the buffers, enabling them to be used for other purposes. If the sending node does not receive an acknowledgement from the receiving node after a period of time, then the sending node retransmits the data to the receiving node.
Based on the foregoing, it is clearly desirable to provide a method and mechanism for reliably transporting data without incurring the overhead incurred by conventional reliable transport mechanisms.